var copyId = "";// 点击复制按钮暂存nodeId
var inCopyId = "";// 粘贴目标节点nodeId
var archiveType;
var copyNodeData = "LANTOP_TAB_CLASS_COPY_V";// 存储传递给库结构定义复制页面树的 数据 视图名称
var currentOrgId;
var currentUserId;
$(function() {
	getCurrentOrgId();
	loadDemoTree();
});
var expandFlag = false;
var firstLoadFlag = true;
// 初始化树
function loadDemoTree() {
	$('#classTree').tree({
		checkbox : false, /* 是否带复选框 */
		lines : true, /* 线条 */
		method : 'post' /* 请求数据方式 */,
		url : 'platform/LantopArchiveClassController/findChildsByNodeId', /* 请求数据地址 */
		dataType : "json", /* 数据格式 */
		onClick : function(node) {
			// 树节点单击事件
			onClickRowEvent(node, copyNodeData);
		},
		loadFilter : function(data) {
			// 过滤后台返回的数据，处理不同json结构
			if (data.data) {
				return data.data;
			} else {
				return data;
			}
		},
		onContextMenu : function(e, node) {
			// 树节点右击菜单
			e.preventDefault();
			$(this).tree('select', node.target);
			showMenu(node, e);
		},
		onLoadSuccess : function(_node, data) {
			var node = $("#classTree").tree("getRoot");
			if (node != null) {
				$("#classTree").tree("select", node.target);
			}
			if(firstLoadFlag && parent.location.pathname.indexOf('NavigationOfCreateSubOrg.jsp')>0 && data){
				var t = $(this);
				if(expandFlag && data[0]){
					if(data[0].state == "closed"){
						t.tree('expand',  t.tree('find',data[0].id).target);
					}else{
						t.tree('select',t.tree('find',data[0].id).target);
						onClickRowEvent(t.tree('find',data[0].id), copyNodeData);
						firstLoadFlag = false;
					}
				}else{
					if(data[0].attributes.PARENT_ID=="ROOT"){ // 展开根节点至档案管理
						$(data[0].children).each(function (index, d) {
							if(d.text == "档案管理"){
								t.tree('expand',  t.tree('find',d.id).target);
								expandFlag = true;
							}
						});
					}
				}
			}
		},
		onSelect : function(node) {

		},
		formatter : function(node) {
			return '<span title="' + node.text + '">' + node.text + '</span>';
		}
	});
}

// 点击的节点刷新iframe
function onClickRowEvent(node, copyNodeData) {
	if (node.attributes.PARENT_ID == "ROOT") {
		document.getElementById("mainIframe").src = "";
		return;
	}
	var sysId = node.attributes.SYS_ID;
	var nodeName = encodeURI(encodeURI(node.attributes.ARCHIVE_CLASS_NODE_NAME));
	var tableName = node.attributes.TABLE_NAME;
	var nodeType = "";
	var type = node.attributes.ARCHIVE_TYPE;
	var nodeCode = node.attributes.ARCHIVE_CLASS_NODE_CODE;
	var nodeId = "";
	// 如果为库表
	if (type == "-1") {
		nodeType = "Y";
		nodeId = node.attributes.PARENT_ID;
		// 显示具体内容
		document.getElementById("mainIframe").src = "avicit/cbb/techclass/tabledefine/commtablemanager/table_define_manager_interface.jsp?sysId=" + sysId + "&tableName=" + tableName + "&nodeId=" + nodeId + "&nodeName=" + nodeName + "&nodeType=" + nodeType + "&nodeCode="
				+ nodeCode + "&copyNodeData=" + copyNodeData;
	} else {
		if (node.attributes.TABLE_LAYER != "" && node.attributes.TABLE_LAYER != null) {
			nodeType = "N";
			nodeId = node.id;
			document.getElementById("mainIframe").src = "platform/LantopArchiveClassController/toAttributeTableView?id=" + nodeId + "&nodeType=" + nodeType;
		} else {// 文件夹属性
			nodeType = "N";
			nodeId = node.id;
			document.getElementById("mainIframe").src = "platform/LantopArchiveClassController/toAttributeView?id=" + nodeId + "&nodeType=" + nodeType;
		}

	}
}

/**
 * 加载树右键菜单
 * 
 * @param type
 * @param node
 * @param e
 */
function showMenu(node, e) {
	if (node.attributes.PARENT_ID == "ROOT") {
		$('#templateTree').tree('select', node.target);
		$('#topRootMenu').menu('show', {
			left : e.pageX,
			top : e.pageY
		});
	} else {
		// 如果为模板文件夹
		if (node.attributes.ARCHIVE_TYPE == "0") {
			// 右键模板文件夹是否显示删除按钮
			$.ajax({
				url : 'platform/LantopArchiveClassController/getCountByClassFloder',
				data : {
					id : node.id
				},
				type : 'post',
				dataType : 'json',
				success : function(result) {

					if (result.flag == "success") {
						// 无子节点
						if (result.count == 0) {
							var itemAdd = $('#rootMenu').menu('findItem', '添加');
							$('#rootMenu').menu('enableItem', itemAdd.target);
							var itemDelete = $('#rootMenu').menu('findItem', '删除');
							$('#rootMenu').menu('enableItem', itemDelete.target);
							var itemCopy = $('#rootMenu').menu('findItem', '复制');
							$('#rootMenu').menu('disableItem', itemCopy.target);
							var itemPaste = $('#rootMenu').menu('findItem', '粘贴');
							// 如果已复制节点
							if (copyId != "" && copyId != null) {
								// 查找一个节点并选择它
								var node = $('#classTree').tree('find', copyId);
								if (node != "" && node != null) {
									$('#rootMenu').menu('enableItem', itemPaste.target);
								} else {
									$('#rootMenu').menu('disableItem', itemPaste.target);
								}
							} else {
								$('#rootMenu').menu('disableItem', itemPaste.target);
							}
							var itemAttribute = $('#rootMenu').menu('findItem', '属性');
							$('#rootMenu').menu('enableItem', itemAttribute.target);

						} else {// 有子节点
							var itemAdd = $('#rootMenu').menu('findItem', '添加');
							$('#rootMenu').menu('enableItem', itemAdd.target);
							var itemDelete = $('#rootMenu').menu('findItem', '删除');
							$('#rootMenu').menu('disableItem', itemDelete.target);
							var itemCopy = $('#rootMenu').menu('findItem', '复制');
							$('#rootMenu').menu('disableItem', itemCopy.target);
							var itemPaste = $('#rootMenu').menu('findItem', '粘贴');
							// 如果已复制节点
							if (copyId != "" && copyId != null) {
								// 查找一个节点并选择它
								var node = $('#classTree').tree('find', copyId);
								if (node != "" && node != null) {
									$('#rootMenu').menu('enableItem', itemPaste.target);
								} else {
									$('#rootMenu').menu('disableItem', itemPaste.target);
								}
							} else {
								$('#rootMenu').menu('disableItem', itemPaste.target);
							}
							var itemAttribute = $('#rootMenu').menu('findItem', '属性');
							$('#rootMenu').menu('enableItem', itemAttribute.target);
						}
						if(currentOrgId!='ORG_ROOT'){
							$('#rootMenu').menu('disableItem', document.getElementById("#m-add"));
						}
					}
				}
			});
		} else if (node.attributes.ARCHIVE_TYPE == "-1") {// 如果为物理表
			var itemAdd = $('#rootMenu').menu('findItem', '添加');
			$('#rootMenu').menu('disableItem', itemAdd.target);
			var itemDelete = $('#rootMenu').menu('findItem', '删除');
			$('#rootMenu').menu('disableItem', itemDelete.target);
			var itemCopy = $('#rootMenu').menu('findItem', '复制');
			$('#rootMenu').menu('disableItem', itemCopy.target);
			var itemPaste = $('#rootMenu').menu('findItem', '粘贴');
			$('#rootMenu').menu('disableItem', itemPaste.target);
			var itemAttribute = $('#rootMenu').menu('findItem', '属性');
			$('#rootMenu').menu('disableItem', itemAttribute.target);
		} else {// 如果为模板
			var itemAdd = $('#rootMenu').menu('findItem', '添加');
			$('#rootMenu').menu('disableItem', itemAdd.target);

			if(currentOrgId=='ORG_ROOT'){
				var itemDelete = $('#rootMenu').menu('findItem', '删除');
				$('#rootMenu').menu('enableItem', itemDelete.target);
				var itemCopy = $('#rootMenu').menu('findItem', '复制');
				$('#rootMenu').menu('enableItem', itemCopy.target);
			}else{
				// 二级及以下单位, 禁用复制
				var itemCopy = $('#rootMenu').menu('findItem', '复制');
				$('#rootMenu').menu('disableItem', itemCopy.target);
				if(currentUserId=='1'){ // 二级以下单位, admin 可以删除
					var itemDelete = $('#rootMenu').menu('findItem', '删除');
					$('#rootMenu').menu('enableItem', itemDelete.target);
				}else{
					var itemDelete = $('#rootMenu').menu('findItem', '删除');
					$('#rootMenu').menu('disableItem', itemDelete.target);
				}
			}

			var itemPaste = $('#rootMenu').menu('findItem', '粘贴');
			$('#rootMenu').menu('disableItem', itemPaste.target);
			var itemAttribute = $('#rootMenu').menu('findItem', '属性');
			$('#rootMenu').menu('enableItem', itemAttribute.target);
		}

		$('#classTree').tree('select', node.target);
		$('#rootMenu').menu('show', {
			left : e.pageX,
			top : e.pageY
		});

	}

}

/**
 * 树节点右键各个事件调用方法
 * 
 * @param control
 *            控制执行操作
 */
function openDialog(control) {
	var node = $('#classTree').tree('getSelected');
	var dialogId = "allFormDialog";
	if (node) {
		/*
		 * var isLeaf = $('#classTree').tree('isLeaf', node.target); if
		 * (!isLeaf) { $('#classTree').tree('expand', node.target);
		 * $('#classTree').tree('select', node.target); }
		 */
		var id = node.id;
		if (control == 'delete') {// 删除
			var archiveType = node.attributes.ARCHIVE_TYPE;
			// 直接执行删除操作
			$.messager.confirm('请确认', '您确定要删除当前所选的数据？', function(b) {
				MaskUtil.mask();
				if (b) {
					$.ajax({
						url : 'platform/LantopArchiveClassController/deleteSave',
						data : {
							id : id,
							archiveType : archiveType
						},
						type : 'post',
						dataType : 'json',
						success : function(result) {
							if (result.flag == "success") {
								node = $('#classTree').tree('getSelected');
								$('#classTree').tree('remove', node.target);
								document.getElementById("mainIframe").src = "";
								parent.parent.parent.$.messager.show({
									title : '提示',
									msg : "删除成功!"
								});
							} else {
								parent.parent.parent.$.messager.show({
									title : '提示',
									msg : "删除失败!"
								});
							}
							MaskUtil.unmask();
						}
					});
				} else {
					MaskUtil.unmask();
				}
			});
		} else if (control == 'add') {// 新建
			var usdAdd = new CommonDialog(dialogId, "800", "400", "platform/LantopArchiveClassController/toAddClassView?dialogId=" + dialogId + "&id=" + id, "添加库结构", false, true, false, true,true,true);
			usdAdd.show();
		} else if (control == 'copy') {// 复制
			copyId = node.id;

		} else if (control == 'paste') { // 粘贴
			MaskUtil.mask();
			inCopyId = node.id;
			$.ajax({
				url : 'platform/LantopArchiveClassController/pasteSave',
				data : {
					copyId : copyId,
					inCopyId : inCopyId
				},
				type : 'post',
				dataType : 'json',
				success : function(result) {
					if (result.flag == "success") {
						var node = $('#classTree').tree('getSelected');
						$('#classTree').tree('append', {
							parent : node.target,
							data : result.node
						});
						// 清空复制粘贴记录id
						copyId = "";
						inCopyId = "";
						parent.parent.parent.$.messager.show({
							title : '提示',
							msg : "粘贴成功。"
						});
					} else {
						parent.parent.parent.$.messager.show({
							title : '提示',
							msg : "粘贴失败!"
						});
					}
					MaskUtil.unmask();
				}
			});

		} else if (control == 'attribute') {// 属性
			var usdAdd = "";
			// 模板库属性
			if (node.attributes.TABLE_LAYER != "" && node.attributes.TABLE_LAYER != null) {
				usdAdd = new CommonDialog(dialogId, "800", "400", "platform/LantopArchiveClassController/toAttributeTableView?dialogId=" + dialogId + "&id=" + id, "属性", false, true, false, true);
			} else {// 文件夹属性
				usdAdd = new CommonDialog(dialogId, "800", "400", "platform/LantopArchiveClassController/toAttributeView?dialogId=" + dialogId + "&id=" + id, "属性", false, true, false, true);
			}
			usdAdd.show();
		}
	} else {
		$.messager.alert('提示', '请选择树节点！', 'warning');
	}
}

function syncToSubOrg(){
	$.messager.confirm('请确认', '您确定要将选中节点下所有子节点的信息同步至下级组织?', function(b) {
		if (b) {
			MaskUtil.mask();
			$.post("LantopArchiveClassController/syncToSubOrg",{
				nodeId: $('#classTree').tree("getSelected").id,
			},function (result){
				if(result.flag == "success"){
					parent.parent.parent.$.messager.show({
						title : '提示',
						msg : "同步成功!"
					});
				}else{
					$.messager.alert('提示', '同步失败!', 'warning');
				}
				MaskUtil.unmask();
			});
		}
	});
}

function getCurrentOrgId(){
	$.ajax({
		url:"LantopArchiveClassController/getCurrentOrgId",
		sync:false,
		type : 'post',
		success:function (result){
			currentOrgId = result;
			if(currentOrgId == "ORG_ROOT"){
			//	$("#topRootMenu").menu('enableItem',$("#syncToSubOrg")[0] );
				$("#rootMenu").menu('enableItem',$("#m-syncToSubOrg")[0] );
			}
		}
	});
}